package controller

import (
	"VideoManageSystem/internal/service"
	"errors"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

func DeleteVideo(c *gin.Context) {
	var userInput struct {
		ID string `json:"id"`
	}

	if err := c.ShouldBindJSON(&userInput); err != nil {
		c.JSON(400, gin.H{
			"code":    400,
			"message": "请求参数错误；错误：" + err.Error(),
		})
		return
	}

	// 删除视频
	err := service.DeleteVideoByID(userInput.ID)
	if err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			// 如果是记录未找到错误
			c.JSON(403, gin.H{
				"code":    403,
				"message": "该视频不存在",
			})
		} else {
			c.JSON(500, gin.H{
				"code":    500,
				"message": "服务器内部错误，无法删除指定视频，请稍后再试；错误：" + err.Error(),
			})
		}
		return
	}

	//go func(videoID string) {
	//	// 构造 DELETE 请求 URL
	//	url := fmt.Sprintf("http://127.0.0.1:6590/api/va/videos/%s", videoID)
	//
	//	req, err := http.NewRequest("DELETE", url, nil)
	//	if err != nil {
	//		zap.L().Error("创建请求失败", zap.String("videoId", videoID), zap.Error(err))
	//		return
	//	}
	//
	//	// 设置 header（如果需要）
	//	req.Header.Set("Content-Type", "application/json")
	//
	//	client := &http.Client{}
	//	resp, err := client.Do(req)
	//	if err != nil {
	//		zap.L().Error("调用 VA 服务删除视频失败（网络错误）", zap.String("videoId", videoID), zap.Error(err))
	//		return
	//	}
	//	defer resp.Body.Close()
	//
	//	body, _ := io.ReadAll(resp.Body)
	//	if resp.StatusCode != http.StatusOK {
	//		zap.L().Warn("VA 服务返回非200状态码",
	//			zap.String("videoId", videoID),
	//			zap.Int("status", resp.StatusCode),
	//			zap.ByteString("response", body))
	//	} else {
	//		zap.L().Debug("已通知 VA 服务删除视频", zap.String("videoId", videoID))
	//	}
	//}(userInput.ID)

	// 返回成功响应
	c.JSON(200, gin.H{
		"code":    200,
		"message": "删除指定视频成功",
	})
}
